#ifndef	__BFX_REF_XMLNODELIST_H__
#define	__BFX_REF_XMLNODELIST_H__

namespace BFX
{

//////////////////////////////////////////////////////////////////////////////

// Represents an ordered collection of nodes.
class BFX_API REFXMLNodeList : public REFObject
{
public:
	virtual ~REFXMLNodeList() {}

	// Retrieves a node at the given index.
	virtual REFXMLNode* operator[](int iIndex) const = 0;

	// Retrieves a node at the given index.
	virtual REFXMLNode* GetItem(int nIndex) const = 0;
	// Gets the number of nodes in this list.
	virtual int GetCount() const = 0;
};

class REFXMLChildList : public REFXMLNodeList
{
public:
	REFXMLChildList(const REFXMLNode* pContainer);
	virtual ~REFXMLChildList() {}

	// Retrieves a node at the given index.
	virtual REFXMLNode* operator[](int iIndex) const;
	// Retrieves a node at the given index.
	virtual REFXMLNode* GetItem(int nIndex) const;
	// Gets the number of nodes in this list.
	virtual int GetCount() const;

private:
	const REFXMLNode*	m_pContainer;
};

}	//	namespace BFX

#endif	//	__BFX_REF_XMLNODELIST_H__
